package com.chuangke.file.service;

import java.util.List;

import com.chuangke.file.domain.FileDeleteDTO;
import com.chuangke.file.domain.FileRestoreDTO;
import com.chuangke.file.domain.PermissionSaveDTO;
import com.chuangke.file.model.FileInfo;
import com.chuangke.file.model.FileInfoAffix;

/**
 * @Description
 * @author stm
 * @date 2019年2月24日 下午9:52:09
 */
public interface FileInfoService {
	
	/**
	 * 保存文件元信息
	 * @param fileInfo
	 * @return
	 */
	void saveFileInfo(FileInfo fileInfo) ;
	
	/**
	 * 删除文件元信息
	 * @return
	 */
	void deleteFileInfo(String fileId) ;
	
	/**
	 * 加载文件元信息
	 * @param fileId
	 * @return
	 */
	FileInfo findFileInfo(String fileId) ;
	
	/**
	 * 加载文件元信息
	 * @return
	 */
	List<FileInfo> findFileInfos(List<String> fileIds) ;

	// 文件删除到回收站
	List<FileInfo> deleteToRecycle(FileDeleteDTO param);

	// 文件从回收站恢复
	List<FileInfo> restoreFromRecycle(FileRestoreDTO param);

	// 彻底删除文档
	List<FileInfo> deleteShift(FileDeleteDTO param);

	//清空回收站
	List<FileInfo> cleanRecycle(String dbankId);

	//更新缩率图信息
	void updateHandleInfo(FileInfo fileInfo);

	// 创建目录
	FileInfo createDir(FileInfo file);

	// 文件移动
	void move(String dbankId,List<String> idList, String parentId);
	
	// 文件移动(跨网盘)
	void move(String sourceDbankId,List<String> sourceFileIds, String targetDbankId,String targetParentId);

	// 文件复制
	void copy(String dbankId,List<String> idList, String parentId);

	// 重命名
	void rename(FileInfo file);

	// 添加备注
	FileInfo addRemarks(String id, String remarks);

	// 添加评论
	FileInfo addComments(String fileId,String fileName, String comments);

	// 收藏关注
	FileInfo focus(String fileId);

	// 取消收藏关注
	FileInfo unFocus(List<String> fileId);

	// 添加附加属性
	FileInfo addAffix(String fileId, List<FileInfoAffix> affixs);

	// 删除附加属性
	FileInfo removeAffix(String fileId, List<FileInfoAffix> affixs);
	
	// 共享文档
	void share(PermissionSaveDTO dto);
	
	// 取消共享文档
	void unShare(String dbankId,List<String> fileIds);
	
	// 文件分类
	void category(String dbankId,List<String> fileIds,String categoryId);
	
	//发布
	void publish(String dbankId,List<String> fileIds);
	
	//取消发布
	void unPublish(String dbankId,List<String> fileIds);

}
